// 多个函数 组合成 一个函数
let f1 = (str) => {
  return str+'f1'
}
let f2 = (str) => {
  return str+'f2'
}
let f3 = (str) => {
  return str+'f3'
}


function compose(...args) {
  return args.reduce((pre, item)=>(...args2) => pre(item(...args2)))
}

let cp1 = compose(f1,f2,f3)
console.log(cp1(111))
// f1(f2(f3('str')))

// 结合律  任意函数相组合